﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Modelo.Modulos.ClasesModelado;
using System.Data.SqlClient;
using System.Data;

namespace AccesoDatos.Modulos.ClasesAccesoDatos
{
    public class PuestosBD
    {

        public void InsertarPuesto(SqlCommand comando, PuestosMod  obj)
        {
            try
            {
                string sp = "spInsertarPuesto";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();


                comando.Parameters.Add(new SqlParameter("@Nombre", SqlDbType.VarChar));
                comando.Parameters.Add(new SqlParameter("@Descripcion", SqlDbType.VarChar));


                comando.Parameters[0].Value = obj.Nombre;
                comando.Parameters[1].Value = obj.Descripcion;


                comando.ExecuteNonQuery();


            }
            catch (Exception exc)
            {
                throw exc;
            }
        }

        public List<PuestosMod> Consultar(SqlCommand comando)
        {
            try
            {
                string sp = "spConsultarPuestos";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                IDbDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
                DataSet ds = new DataSet();
                da.Fill(ds);

                DataTable dt = ds.Tables[0];
                List<PuestosMod> lista = new List<PuestosMod>();

                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    PuestosMod obj = new PuestosMod();
                    obj.IdPuesto = Convert.ToInt32(dt.Rows[i]["IdPuesto"]);
                    obj.Nombre = dt.Rows[i]["NombrePuesto"].ToString();
                    obj.Descripcion = dt.Rows[i]["DescripcionPuesto"].ToString();
                    lista.Add(obj);
                }


                return lista;

            }
            catch (Exception exc)
            {
                throw exc;
            }
        }

        public void Eliminar(SqlCommand comando, PuestosMod obj)
        {
            try
            {
                string sp = "spEliminaPuesto";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();


                comando.Parameters.Add(new SqlParameter("@IdPuesto", SqlDbType.VarChar));

                comando.Parameters[0].Value = obj.IdPuesto;

                comando.ExecuteNonQuery();


            }
            catch (Exception exc)
            {
                throw exc;
            }
        }

        public List<PuestosMod> ConsultarPuestoID(SqlCommand comando, PuestosMod objs)
        {
            try
            {
                string sp = "spConsultarPuestobyId";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                comando.Parameters.Add(new SqlParameter("@IdPuesto", SqlDbType.VarChar));

                comando.Parameters[0].Value = objs.IdPuesto;

                IDbDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
                DataSet ds = new DataSet();
                da.Fill(ds);

                DataTable dt = ds.Tables[0];
                List<PuestosMod> lista = new List<PuestosMod>();

                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    PuestosMod obj = new PuestosMod();

                    obj.Nombre = dt.Rows[i]["NombrePuesto"].ToString();
                    obj.Descripcion = dt.Rows[i]["DescripcionPuesto"].ToString();
                    lista.Add(obj);
                }


                return lista;

            }
            catch (Exception exc)
            {
                throw exc;
            }
        }

        public void ActualizarPuesto(SqlCommand comando, PuestosMod obj)
        {
            try
            {
                string sp = "spActualizarPuesto";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                comando.Parameters.Add(new SqlParameter("@IdPuesto", SqlDbType.VarChar));
                comando.Parameters.Add(new SqlParameter("@Nombre", SqlDbType.VarChar));
                comando.Parameters.Add(new SqlParameter("@Descripcion", SqlDbType.VarChar));

                comando.Parameters[0].Value = obj.IdPuesto;
                comando.Parameters[1].Value = obj.Nombre;
                comando.Parameters[2].Value = obj.Descripcion;


                comando.ExecuteNonQuery();


            }
            catch (Exception exc)
            {
                throw exc;
            }
        }

    }
}
